home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src-glu
/
glu.s
< prev
next >
Wrap
Text File
|
1998-12-15
|
14KB
|
757 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src-glu/glu.c
mc68030
mc68881
XREF _glTranslated
XREF _glMultMatrixf
XREF _glMultMatrixd
XREF _glFrustum
XREF _glOrtho
XREF _sqrt__r
XREF _tan__r
XREF _std__in
XREF _std__out
XREF _std__err
SECTION "_gluLookAt:0",CODE
;void APIENTRY gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez
XDEF _gluLookAt
_gluLookAt
L92 EQU -$D0
link a5,#L92
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
fmove.d $20(a5),fp0
fmove.d $30(a5),fp1
fmove.d $18(a5),fp2
fmove.d $10(a5),fp3
fmove.d $8(a5),fp4
fmove.d $28(a5),fp5
fmove.d $48(a5),fp7
L85
; z[0] = eyex - centerx;
fmove.x fp4,fp6
fsub.x fp0,fp6
fmove.d fp6,-$C8(a5)
; z[1] = eyey - centery;
fmove.x fp3,fp0
fsub.x fp5,fp0
lea -$C8(a5),a0
fmove.d fp0,$8(a0)
; z[2] = eyez - centerz;
fmove.x fp2,fp0
fsub.x fp1,fp0
lea -$C8(a5),a0
fmove.d fp0,$10(a0)
; mag = sqrt( z[0]*z[0] + z[1]*z[1] + z[2]*z[2] );
fmove.d -$C8(a5),fp0
fmul.d -$C8(a5),fp0
lea -$C8(a5),a0
fmove.d $8(a0),fp1
lea -$C8(a5),a0
fmul.d $8(a0),fp1
fadd.x fp1,fp0
lea -$C8(a5),a0
fmove.d $10(a0),fp1
lea -$C8(a5),a0
fmul.d $10(a0),fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if (mag)
ftst.d fp0
fbeq.b L87
L86
; z[0] /= mag;
lea -$C8(a5),a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
; z[1] /= mag;
lea -$C8(a5),a0
addq.w #$8,a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
; z[2] /= mag;
lea -$C8(a5),a0
add.w #$10,a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
L87
; y[0] = upx;
move.l $38(a5),-$B0(a5)
move.l $3C(a5),-$AC(a5)
; y[1] = upy;
lea -$B0(a5),a0
move.l $40(a5),$8(a0)
move.l $44(a5),$C(a0)
; y[2] = upz;
lea -$B0(a5),a0
fmove.d fp7,$10(a0)
; x[0] = y[1]*z[2] - y[2]*z[1];
lea -$B0(a5),a0
fmove.d $8(a0),fp0
lea -$C8(a5),a0
fmul.d $10(a0),fp0
lea -$B0(a5),a0
fmove.d $10(a0),fp1
lea -$C8(a5),a0
fmul.d $8(a0),fp1
fsub.x fp1,fp0
fmove.d fp0,-$98(a5)
; x[1] = -y[0]*z[2] + y[2]*z[0];
fmove.d -$B0(a5),fp0
fneg.d fp0
lea -$C8(a5),a0
fmul.d $10(a0),fp0
lea -$B0(a5),a0
fmove.d $10(a0),fp1
fmul.d -$C8(a5),fp1
fadd.x fp1,fp0
lea -$98(a5),a0
fmove.d fp0,$8(a0)
; x[2] = y[0]*z[1] - y[1]*z[0];
lea -$C8(a5),a0
fmove.d -$B0(a5),fp0
fmul.d $8(a0),fp0
lea -$B0(a5),a0
fmove.d $8(a0),fp1
fmul.d -$C8(a5),fp1
fsub.x fp1,fp0
lea -$98(a5),a0
fmove.d fp0,$10(a0)
; y[0] = z[1]*x[2] - z[2]*x[1];
lea -$C8(a5),a0
fmove.d $8(a0),fp0
lea -$98(a5),a0
fmul.d $10(a0),fp0
lea -$C8(a5),a0
fmove.d $10(a0),fp1
lea -$98(a5),a0
fmul.d $8(a0),fp1
fsub.x fp1,fp0
fmove.d fp0,-$B0(a5)
; y[1] = -z[0]*x[2] + z[2]*x[0];
fmove.d -$C8(a5),fp0
fneg.d fp0
lea -$98(a5),a0
fmul.d $10(a0),fp0
lea -$C8(a5),a0
fmove.d $10(a0),fp1
fmul.d -$98(a5),fp1
fadd.x fp1,fp0
lea -$B0(a5),a0
fmove.d fp0,$8(a0)
; y[2] = z[0]*x[1] - z[1]*x[0];
lea -$98(a5),a0
fmove.d -$C8(a5),fp0
fmul.d $8(a0),fp0
lea -$C8(a5),a0
fmove.d $8(a0),fp1
fmul.d -$98(a5),fp1
fsub.x fp1,fp0
lea -$B0(a5),a0
fmove.d fp0,$10(a0)
; mag = sqrt( x[0]*x[0] + x[1]*x[1] + x[2]*x[2] );
fmove.d -$98(a5),fp0
fmul.d -$98(a5),fp0
lea -$98(a5),a0
fmove.d $8(a0),fp1
lea -$98(a5),a0
fmul.d $8(a0),fp1
fadd.x fp1,fp0
lea -$98(a5),a0
fmove.d $10(a0),fp1
lea -$98(a5),a0
fmul.d $10(a0),fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if (mag)
ftst.d fp0
fbeq.b L89
L88
; x[0] /= mag;
lea -$98(a5),a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
; x[1] /= mag;
lea -$98(a5),a0
addq.w #$8,a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
; x[2] /= mag;
lea -$98(a5),a0
add.w #$10,a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
L89
; mag = sqrt( y[0]*y[0] + y[1]*y[1] + y[2]*y[2] );
fmove.d -$B0(a5),fp0
fmul.d -$B0(a5),fp0
lea -$B0(a5),a0
fmove.d $8(a0),fp1
lea -$B0(a5),a0
fmul.d $8(a0),fp1
fadd.x fp1,fp0
lea -$B0(a5),a0
fmove.d $10(a0),fp1
lea -$B0(a5),a0
fmul.d $10(a0),fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if (mag)
ftst.d fp0
fbeq.b L91
L90
; y[0] /= mag;
lea -$B0(a5),a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
; y[1] /= mag;
lea -$B0(a5),a0
addq.w #$8,a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
; y[2] /= mag;
lea -$B0(a5),a0
add.w #$10,a0
fmove.d (a0),fp1
fdiv.x fp0,fp1
fmove.d fp1,(a0)
L91
; M(0,0) = x[0];
move.l -$98(a5),-$80(a5)
move.l -$94(a5),-$7C(a5)
; M(0,1) = x[1];
lea -$98(a5),a0
fmove.d $8(a0),fp0
lea -$80(a5),a0
fmove.d fp0,$20(a0)
; M(0,2) = x[2];
lea -$98(a5),a0
fmove.d $10(a0),fp0
lea -$80(a5),a0
fmove.d fp0,$40(a0)
; M(0,3) = 0.0;
lea -$80(a5),a0
clr.l $60(a0)
clr.l $64(a0)
; M(1,0) = y[0];
lea -$80(a5),a0
move.l -$B0(a5),$8(a0)
move.l -$AC(a5),$C(a0)
; M(1,1) = y[1];
lea -$B0(a5),a0
fmove.d $8(a0),fp0
lea -$80(a5),a0
fmove.d fp0,$28(a0)
; M(1,2) = y[2];
lea -$B0(a5),a0
fmove.d $10(a0),fp0
lea -$80(a5),a0
fmove.d fp0,$48(a0)
; M(1,3) = 0.0;
lea -$80(a5),a0
clr.l $68(a0)
clr.l $6C(a0)
; M(2,0) = z[0];
lea -$80(a5),a0
move.l -$C8(a5),$10(a0)
move.l -$C4(a5),$14(a0)
; M(2,1) = z[1];
lea -$C8(a5),a0
fmove.d $8(a0),fp0
lea -$80(a5),a0
fmove.d fp0,$30(a0)
; M(2,2) = z[2];
lea -$C8(a5),a0
fmove.d $10(a0),fp0
lea -$80(a5),a0
fmove.d fp0,$50(a0)
; M(2,3) = 0.0;
lea -$80(a5),a0
clr.l $70(a0)
clr.l $74(a0)
; M(3,0) = 0.0;
lea -$80(a5),a0
clr.l $18(a0)
clr.l $1C(a0)
; M(3,1) = 0.0;
lea -$80(a5),a0
clr.l $38(a0)
clr.l $3C(a0)
; M(3,2) = 0.0;
lea -$80(a5),a0
clr.l $58(a0)
clr.l $5C(a0)
; M(3,3) = 1.0;
lea -$80(a5),a0
move.l #$3FF00000,$78(a0)
clr.l $7C(a0)
; glMultMatrixd( m );
pea -$80(a5)
jsr _glMultMatrixd
addq.w #4,a7
; glTranslated( -eyex, -eyey, -eyez );
fneg.d fp2
fmove.d fp2,-(a7)
fneg.d fp3
fmove.d fp3,-(a7)
fneg.d fp4
fmove.d fp4,-(a7)
jsr _glTranslated
add.w #$18,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
unlk a5
rts
L82
dc.b 0
L83
dc.b '1.1 Mesa 3.0',0
L74
dc.b 'UNUSED',0
L51
dc.b 'bgncurve() must precede endcurve()',0
L59
dc.b 'bgnsurface() must precede bgntrim()',0
L57
dc.b 'bgnsurface() must precede endsurface()',0
L61
dc.b 'bgntrim() must precede endtrim()',0
L63
dc.b 'bgntrim() must precede pwlcurve()',0
L53
dc.b 'can't draw pwlcurves',0
L41
dc.b 'coincident vertices',0
L42
dc.b 'colinear vertices',0
L58
dc.b 'curve of improper type passed as trim curve',0
L48
dc.b 'decreasing knot sequence knot',0
L81
dc.b 'duplicate point on pwlcurve',0
L50
dc.b 'endcurve() must follow bgncurve()',0
L71
dc.b 'endsurface() must follow bgnsurface()',0
L60
dc.b 'endtrim() must follow bgntrim()',0
L56
dc.b 'endtrim() must precede endsurface()',0
L66
dc.b 'improper usage of trim data type',0
L43
dc.b 'intersecting edges',0
L73
dc.b 'intersecting trim curves',0
L62
dc.b 'invalid or missing trim curve',0
L70
dc.b 'invalid property',0
L49
dc.b 'knot multiplicity greater than order of spline',0
L38
dc.b 'misoriented contour',0
L40
dc.b 'misoriented or self-intersecting loops',0
L72
dc.b 'misoriented trim curves',0
L54
dc.b 'missing bgncurve()',0
L55
dc.b 'missing bgnsurface()',0
L37
dc.b 'missing gluBeginPolygon',0
L36
dc.b 'missing gluEndPolygon',0
L52
dc.b 'missing or extra geometric data',0
L78
dc.b 'negative byte-stride encounteed',0
L77
dc.b 'negative vertex count encountered',0
L44
dc.b 'not coplanar contours',0
L80
dc.b 'null control array or knot vector',0
L68
dc.b 'nurbscurve and pwlcurve mixed',0
L67
dc.b 'nurbscurve referenced twice',0
L69
dc.b 'nurbssurface referenced twice',0
L65
dc.b 'pwlcurve and nurbscurve mixed',0
L64
dc.b 'pwlcurve referenced twice',0
L45
dc.b 'spline order un-supported',0
L46
dc.b 'too few knots',0
L75
dc.b 'unconnected trim curves',0
L76
dc.b 'unknown knot error',0
L79
dc.b 'unknown type descriptor',0
L47
dc.b 'valid knot range is empty',0
L39
dc.b 'vertex/edge intersection',0
SECTION "_gluOrtho2D:0",CODE
rts
;void APIENTRY gluOrtho2D( GLdouble left, GLdouble right,
XDEF _gluOrtho2D
_gluOrtho2D
fmovem.x fp2/fp3,-(a7)
fmove.d $1C(a7),fp0
fmove.d $24(a7),fp1
fmove.d $2C(a7),fp2
fmove.d $34(a7),fp3
L93
; glOrtho( left, right, bottom, top, -1.0, 1.0 );
clr.l -(a7)
move.l #$3FF00000,-(a7)
clr.l -(a7)
move.l #$BFF00000,-(a7)
fmove.d fp3,-(a7)
fmove.d fp2,-(a7)
fmove.d fp1,-(a7)
fmove.d fp0,-(a7)
jsr _glOrtho
add.w #$30,a7
fmovem.x (a7)+,fp2/fp3
rts
SECTION "_gluPerspective:0",CODE
;void APIENTRY gluPerspective( GLdouble fovy, GLdouble aspect,
XDEF _gluPerspective
_gluPerspective
fmovem.x fp2/fp3/fp4/fp5/fp6,-(a7)
fmove.d $40(a7),fp0
fmove.d $48(a7),fp2
fmove.d $50(a7),fp4
fmove.d $58(a7),fp5
L94
; ymax = zNear * tan( fovy * M_PI / 360.0 );
fmul.d #$.400921FB.544486DA,fp0
fdiv.d #$.40768000.00000000,fp0
fmove.d fp0,-(a7)
jsr _tan__r
addq.w #$8,a7
fmul.x fp4,fp0
; ymin = -ymax;
fmove.x fp0,fp1
fneg.d fp1
; xmin = ymin * aspect;
fmove.x fp1,fp3
fmul.x fp2,fp3
; xmax = ymax * aspect;
fmul.x fp0,fp2
; glFrustum( xmin, xmax, ymin, ymax, zNear, zFar );
fmove.d fp5,-(a7)
fmove.d fp4,-(a7)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
fmove.d fp3,-(a7)
jsr _glFrustum
add.w #$30,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6
rts
SECTION "_gluPickMatrix:0",CODE
;void APIENTRY gluPickMatrix( GLdouble x, GLdouble y,
XDEF _gluPickMatrix
_gluPickMatrix
L96 EQU -$50
link a5,#L96
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
move.l $28(a5),a0
fmove.d $18(a5),fp2
fmove.d $20(a5),fp4
fmove.d $8(a5),fp6
fmove.d $10(a5),fp7
L95
; sx = viewport[2] / width;
fmove.l $8(a0),fp0
fdiv.x fp2,fp0
fmove.x fp0,fp5
; sy = viewport[3] / height;
fmove.l $C(a0),fp0
fdiv.x fp4,fp0
fmove.x fp0,fp3
; tx = (viewport[2] + 2.0 * (viewport[0] - x)) / width;
fmove.l $8(a0),fp0
fmove.l (a0),fp1
fsub.x fp6,fp1
fmul.d #$.40000000.00000000,fp1
fadd.x fp1,fp0
fdiv.x fp2,fp0
fmove.x fp0,fp2
; ty = (viewport[3] + 2.0 * (viewport[1] - y)) / height;
fmove.l $C(a0),fp0
fmove.l 4(a0),fp1
fsub.x fp7,fp1
fmul.d #$.40000000.00000000,fp1
fadd.x fp1,fp0
fdiv.x fp4,fp0
; M(0,0) = sx;
fmove.s fp5,-$40(a5)
; M(0,1) = 0.0;
lea -$40(a5),a0
clr.l $10(a0)
; M(0,2) = 0.0;
lea -$40(a5),a0
clr.l $20(a0)
; M(0,3) = tx;
lea -$40(a5),a0
fmove.s fp2,$30(a0)
; M(1,0) = 0.0;
lea -$40(a5),a0
clr.l 4(a0)
; M(1,1) = sy;
lea -$40(a5),a0
fmove.s fp3,$14(a0)
; M(1,2) = 0.0;
lea -$40(a5),a0
clr.l $24(a0)
; M(1,3) = ty;
lea -$40(a5),a0
fmove.s fp0,$34(a0)
; M(2,0) = 0.0;
lea -$40(a5),a0
clr.l $8(a0)
; M(2,1) = 0.0;
lea -$40(a5),a0
clr.l $18(a0)
; M(2,2) = 1.0;
lea -$40(a5),a0
move.l #$3F800000,$28(a0)
; M(2,3) = 0.0;
lea -$40(a5),a0
clr.l $38(a0)
; M(3,0) = 0.0;
lea -$40(a5),a0
clr.l $C(a0)
; M(3,1) = 0.0;
lea -$40(a5),a0
clr.l $1C(a0)
; M(3,2) = 0.0;
lea -$40(a5),a0
clr.l $2C(a0)
; M(3,3) = 1.0;
lea -$40(a5),a0
move.l #$3F800000,$3C(a0)
; glMultMatrixf( m );
pea -$40(a5)
jsr _glMultMatrixf
addq.w #4,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
unlk a5
rts
SECTION "_gluErrorString:0",CODE
;const GLubyte* APIENTRY gluErrorString( GLenum errorCode )
XDEF _gluErrorString
_gluErrorString
move.l 4(a7),d0
L105
; if (errorCode==GL_NO_ERROR)
tst.l d0
bne.b L107
L106
move.l #L97,d0
rts
L107
; else if (errorCode==GL_INVALID_VALUE)
cmp.l #$501,d0
bne.b L109
L108
move.l #L98,d0
rts
L109
; else if (errorCode==GL_INVALID_ENUM)
cmp.l #$500,d0
bne.b L111
L110
move.l #L99,d0
rts
L111
; else if (errorCode==GL_INVALID_OPERATION)
cmp.l #$502,d0
bne.b L113
L112
move.l #L100,d0
rts
L113
; else if (errorCode==GL_STACK_OVERFLOW)
cmp.l #$503,d0
bne.b L115
L114
move.l #L101,d0
rts
L115
; else if (errorCode==GL_STACK_UNDERFLOW)
cmp.l #$504,d0
bne.b L117
L116
move.l #L102,d0
rts
L117
; else if (errorCode==GL_OUT_OF_MEMORY)
cmp.l #$505,d0
bne.b L119
L118
move.l #L103,d0
rts
L119
; else if (errorCode==GLU_NO_ERROR)
tst.l d0
bne.b L121
L120
move.l #L97,d0
rts
L121
; else if (errorCode==GLU_INVALID_ENUM)
cmp.l #$18A24,d0
bne.b L123
L122
move.l #L99,d0
rts
L123
; else if (errorCode==GLU_INVALID_VALUE)
cmp.l #$18A25,d0
bne.b L125
L124
move.l #L98,d0
rts
L125
; else if (errorCode==GLU_OUT_OF_MEMORY)
cmp.l #$18A26,d0
bne.b L127
L126
move.l #L103,d0
rts
L127
; else if (errorCode==GLU_INCOMPATIBLE_GL_VERSION)
cmp.l #$18A27,d0
bne.b L129
L128
move.l #L104,d0
rts
L129
; else if (errorCode>=GLU_TESS_ERROR1 && errorCode<=GLU_TES
cmp.l #$18737,d0
blt.b L132
L130
cmp.l #$1873F,d0
bgt.b L132
L131
lea _tess_error___gluErrorString(a6),a0
sub.l #$61CDC,a0
move.l 0(a0,d0.l*4),d0
rts
L132
; else if (errorCode>=GLU_NURBS_ERROR1 && errorCode<=GLU_NU
cmp.l #$1879B,d0
blt.b L135
L133
cmp.l #$187BF,d0
bgt.b L135
L134
lea _nurbs_error___gluErrorString(a6),a0
sub.l #$61E6C,a0
move.l 0(a0,d0.l*4),d0
rts
L135
moveq #0,d0
rts
L104
dc.b 'incompatible GL version',0
L99
dc.b 'invalid enum',0
L100
dc.b 'invalid operation',0
L98
dc.b 'invalid value',0
L97
dc.b 'no error',0
L103
dc.b 'out of memory',0
L101
dc.b 'stack overflow',0
L102
dc.b 'stack underflow',0
SECTION "_gluErrorString:1",DATA
_tess_error___gluErrorString
dc.l L36,L37,L38,L39,L40,L41,L42,L43,L44
_nurbs_error___gluErrorString
dc.l L45,L46,L47,L48,L49,L50,L51,L52,L53,L54,L55
dc.l L56,L57,L58,L59,L60,L61,L62,L63,L64,L65,L66
dc.l L67,L68,L69,L70,L71,L72,L73,L74,L75,L76,L77
dc.l L78,L79,L80,L81
SECTION "_gluGetString:0",CODE
;const GLubyte* APIENTRY gluGetString( GLenum name )
XDEF _gluGetString
_gluGetString
move.l 4(a7),d0
L136
; switch (name)
cmp.l #$189C0,d0
beq.b L138
cmp.l #$189C1,d0
beq.b L137
bra.b L139
;
L137
move.l _extensions___gluGetString(a6),d0
rts
L138
move.l _version___gluGetString(a6),d0
rts
L139
moveq #0,d0
rts
SECTION "_gluGetString:1",DATA
_extensions___gluGetString
dc.l L82
_version___gluGetString
dc.l L83
END